#include <cstdio>
#include <algorithm>
#include <set>
using namespace std;
const int INF=0x3f3f3f3f;
int a[4][2];
int b[4][2];
set<pair<int,int>> s;
int main(void){
    //freopen("data.txt","r",stdin);
    int minx=INF;
    int miny=INF;
    int maxx=-INF;
    int maxy=-INF;
    for(int i=0;i<4;i++){
        scanf("%d%d",&a[i][0],&a[i][1]);
        if(a[i][0]>maxx){
            maxx=a[i][0];
        }
        if(a[i][0]<minx){
            minx=a[i][0];
        }
        if(a[i][1]>maxy){
            maxy=a[i][1];
        }
        if(a[i][1]<miny){
            miny=a[i][1];
        }
    }
    //printf("%d %d %d %d\n",minx,maxx,miny,maxy);
    for(int i=minx;i<=maxx;i++){
        for(int j=miny;j<=maxy;j++){
            s.insert({i,j});
        }
    }
    minx=INF;
    miny=INF;
    maxx=-INF;
    maxy=-INF;
    for(int i=0;i<4;i++){
        scanf("%d%d",&b[i][0],&b[i][1]);
        if(b[i][0]>maxx){
            maxx=b[i][0];
        }
        if(b[i][0]<minx){
            minx=b[i][0];
        }
        if(b[i][1]>maxy){
            maxy=b[i][1];
        }
        if(b[i][1]<miny){
            miny=b[i][1];
        }
    }
    //printf("%d %d %d %d\n",minx,maxx,miny,maxy);
    int m=(minx+maxx)/2;
    bool flag=false;
    for(int i=0;i<=maxx-m;i++){
        for(int j=miny;j<=maxy;j++){
            if(s.find({m-i,j})!=s.end() || s.find({m+i,j})!=s.end()){
                flag=true;
                break;
            }
        }
        miny++;
        maxy--;
        if(flag){
            break;
        }
    }
    if(flag){
        printf("YES\n");
    }
    else{
        printf("NO\n");
    }
    return 0;
}